package one.stand.service;

import com.github.pagehelper.PageInfo;
import one.stand.exception.SystemException;
import one.stand.model.ResultModel;
import one.stand.request.*;
import one.stand.request.coupon.GoodsCouponQuery;
import one.stand.response.CompanyCouponResponse;
import one.stand.response.UserCouponResponse;

import java.util.List;

/**
 * @author: QIK
 * @CreateDate: 2019/6/24 17:23
 */
public interface UserCouponService {

    /**
     * 领取优惠券
     * @param request
     * @return
     */
    ResultModel<Boolean> receive(CouponRequest request);

    /**
     * 用户自己的优惠券列表
     * @param request
     * @return
     */
    ResultModel<PageInfo<UserCouponResponse>> myList(UserCouponRequest request);

    /**
     * 获取未领取的优惠券
     * @return
     */
    ResultModel<List<CompanyCouponResponse>> noReceive(UserCouponRequest request);

    ResultModel<List<UserCouponResponse>> grantCoupon(GrantCouponRequest requestGrant);

    ResultModel<Boolean> receiveCoupon(CouponRequest couponRequest) throws SystemException;


    ResultModel<UserCouponResponse> updateOrderNum(final CouponOrderRequest couponOrderRequest);


    ResultModel<List<UserCouponResponse>> selectUserCouponNotUsed(GoodsCouponQuery goodsCouponQuery);

}
